{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notes:\n",
    " * tapping into the final activations layer instead of the final predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/1/AstroCNNModelVetting_base_20210905_150235',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/2/AstroCNNModelVetting_base_20210905_151126',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/3/AstroCNNModelVetting_base_20210905_152009',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/4/AstroCNNModelVetting_base_20210905_152900',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/5/AstroCNNModelVetting_base_20210905_153822',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/6/AstroCNNModelVetting_base_20210905_154724',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/7/AstroCNNModelVetting_base_20210905_155628',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/8/AstroCNNModelVetting_base_20210905_160518',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/9/AstroCNNModelVetting_base_20210905_161358',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2/10/AstroCNNModelVetting_base_20210905_162234']"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "chkpt_root = '/mnt/tess/astronet/checkpoints/vetting_base_1_run_2'\n",
    "data_files = '/mnt/tess/astronet/tfrecords-vetting-1-val/*'\n",
    "tces_file = '/mnt/tess/astronet/tces-vetting-v1-val.csv'\n",
    "\n",
    "nruns = 10\n",
    "\n",
    "def load_ensemble(chkpt_root, nruns):\n",
    "    checkpts = []\n",
    "    for i in range(nruns):\n",
    "        parent = os.path.join(chkpt_root, str(i + 1))\n",
    "        if not os.path.exists(parent):\n",
    "            break\n",
    "        all_dirs = os.listdir(parent)\n",
    "        if not all_dirs:\n",
    "            break\n",
    "        d, = all_dirs\n",
    "        checkpts.append(os.path.join(parent, d))\n",
    "    return checkpts\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "paths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running model 1\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 2\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 3\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 4\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 5\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 6\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 7\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 8\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 9\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 10\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n"
     ]
    }
   ],
   "source": [
    "import getpass\n",
    "import os\n",
    "from astronet import predict\n",
    "import tensorflow as tf\n",
    "\n",
    "\n",
    "def run_predictions(path):\n",
    "    predict.FLAGS = predict.parser.parse_args([\n",
    "      '--model_dir', path,\n",
    "      '--data_files', data_files,\n",
    "      '--output_file', '',\n",
    "    ])\n",
    "\n",
    "    return predict.predict()\n",
    "\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "ensemble_preds = []\n",
    "config = None\n",
    "for i, path in enumerate(paths):\n",
    "    print(f'Running model {i + 1}')\n",
    "    preds, config = run_predictions(path)\n",
    "    ensemble_preds.append(preds.set_index('tic_id'))\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = ['disp_p', 'disp_e', 'disp_n']\n",
    "\n",
    "col_p = labels.index('disp_p')\n",
    "thresh = config.hparams.prediction_threshold\n",
    "thresh = 0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "agg_preds = {}\n",
    "\n",
    "for preds in ensemble_preds:\n",
    "    for tic_id in preds.index:\n",
    "        if tic_id not in agg_preds:\n",
    "            agg_preds[tic_id] = []\n",
    "\n",
    "        row = preds[preds.index == tic_id]\n",
    "        pred_v = row.values[0]\n",
    "        if len(row.values) > 1:\n",
    "            print(f'Warning: duplicate predictions for {tic_id}')\n",
    "        if pred_v[col_p] >= thresh:\n",
    "            agg_preds[tic_id].append('disp_p')\n",
    "        else:\n",
    "            masked_v = [v if i != col_p else 0 for i, v in enumerate(pred_v)]\n",
    "            agg_preds[tic_id].append(preds.columns[np.argmax(masked_v)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "final_preds = []\n",
    "for tic_id in list(agg_preds.keys()):\n",
    "    counts = {l: 0 for l in labels}\n",
    "    for e in agg_preds[tic_id]:\n",
    "        counts[e] += 1\n",
    "    maxcount = max(counts.values())\n",
    "    counts.update({\n",
    "        'tic_id': tic_id,\n",
    "        'maxcount': maxcount,\n",
    "    })\n",
    "    final_preds.append(counts)\n",
    "    \n",
    "final_preds = pd.DataFrame(final_preds).set_index('tic_id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "tce_table = pd.read_csv(tces_file, header=0).set_index('tic_id')\n",
    "tce_labels = tce_table[labels]\n",
    "\n",
    "pl = final_preds.join(tce_labels, on='tic_id', how='left', lsuffix='_p')\n",
    "\n",
    "pl.head()\n",
    "pd.set_option('display.max_columns', None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall: 0.5263157894736842\n",
      "Precision: 0.2777777777777778\n"
     ]
    }
   ],
   "source": [
    "ppos = (pl['disp_p_p'] > 0)\n",
    "pos = (pl['disp_p'] > 0)\n",
    "\n",
    "pneg = (pl['disp_p_p'] == 0)\n",
    "neg = (pl['disp_p'] == 0)\n",
    "\n",
    "print('Recall:', len(pl[ppos & pos]) / len(pl[pos]))\n",
    "print('Precision:', len(pl[ppos & pos]) / len(pl[ppos]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "120199940\n",
      "293962038\n",
      "29984131\n",
      "348770361\n",
      "91576611\n",
      "283156726\n",
      "375506058\n",
      "127722285\n",
      "357719182\n"
     ]
    }
   ],
   "source": [
    "for i in pl[pos & pneg][[]].join(tce_table, on='tic_id', how='left').index:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "169446708\n",
      "24491836\n",
      "260504114\n",
      "261562118\n",
      "276936320\n",
      "280095254\n",
      "30471979\n",
      "304729846\n",
      "344978642\n",
      "384068226\n",
      "384744828\n",
      "400734328\n",
      "61802871\n",
      "417126296\n",
      "142963071\n",
      "240460949\n",
      "365494323\n",
      "388076435\n",
      "149854222\n",
      "250475499\n",
      "326974824\n",
      "321828403\n",
      "332146607\n",
      "202444594\n",
      "1715469662\n",
      "1715469667\n"
     ]
    }
   ],
   "source": [
    "for i in pl[neg & ppos][[]].join(tce_table, on='tic_id', how='left').index:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_p</th>\n",
       "      <th>disp_e</th>\n",
       "      <th>disp_n</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tic_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.000174</td>\n",
       "      <td>0.999867</td>\n",
       "      <td>0.001014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.000089</td>\n",
       "      <td>0.999955</td>\n",
       "      <td>0.000537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.000391</td>\n",
       "      <td>0.999612</td>\n",
       "      <td>0.002277</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.000084</td>\n",
       "      <td>0.999963</td>\n",
       "      <td>0.000105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.001270</td>\n",
       "      <td>0.999204</td>\n",
       "      <td>0.001697</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.000124</td>\n",
       "      <td>0.999903</td>\n",
       "      <td>0.000537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.000187</td>\n",
       "      <td>0.999895</td>\n",
       "      <td>0.000664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.001038</td>\n",
       "      <td>0.999136</td>\n",
       "      <td>0.004760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.001048</td>\n",
       "      <td>0.999197</td>\n",
       "      <td>0.003416</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.002246</td>\n",
       "      <td>0.998142</td>\n",
       "      <td>0.001986</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             disp_p    disp_e    disp_n\n",
       "tic_id                                 \n",
       "278866211  0.000174  0.999867  0.001014\n",
       "278866211  0.000089  0.999955  0.000537\n",
       "278866211  0.000391  0.999612  0.002277\n",
       "278866211  0.000084  0.999963  0.000105\n",
       "278866211  0.001270  0.999204  0.001697\n",
       "278866211  0.000124  0.999903  0.000537\n",
       "278866211  0.000187  0.999895  0.000664\n",
       "278866211  0.001038  0.999136  0.004760\n",
       "278866211  0.001048  0.999197  0.003416\n",
       "278866211  0.002246  0.998142  0.001986"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def compare(ensemble_preds, filter):\n",
    "    result = ensemble_preds[0][filter]\n",
    "    for preds in ensemble_preds[1:]:\n",
    "        result = result.append(preds[filter])\n",
    "    return result\n",
    "\n",
    "compare(ensemble_preds, preds.index == 278866211)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_p_p</th>\n",
       "      <th>disp_e_p</th>\n",
       "      <th>disp_n_p</th>\n",
       "      <th>maxcount</th>\n",
       "      <th>disp_p</th>\n",
       "      <th>disp_e</th>\n",
       "      <th>disp_n</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tic_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>375506058</th>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           disp_p_p  disp_e_p  disp_n_p  maxcount  disp_p  disp_e  disp_n\n",
       "tic_id                                                                   \n",
       "375506058         0        10         0        10       1       0       0"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pl[pl.index == 375506058]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PR curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "tics = set(ensemble_preds[0].index.values)\n",
    "\n",
    "tic_index = {v: i for i, v in enumerate(tics)}\n",
    "\n",
    "pred_ps = np.zeros([len(ensemble_preds), len(tic_index)])\n",
    "for i, preds in enumerate(ensemble_preds):\n",
    "    for row in preds.iterrows():\n",
    "        tic, pred_p = row[0], row[1][col_p]\n",
    "        pred_ps[i][tic_index[tic]] = pred_p\n",
    "\n",
    "lbl_ps = np.zeros([len(tic_index)], dtype=np.bool)\n",
    "for row in tce_labels.iterrows():\n",
    "    tic, lbl_p = row[0], row[1]['disp_p']\n",
    "    if tic in tic_index:\n",
    "        lbl_ps[tic_index[tic]] = (lbl_p > 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_cond_pos = float(np.sum(lbl_ps))\n",
    "\n",
    "def pr_at_th(th):\n",
    "    pred_pos = np.any(pred_ps >= th, axis=0)\n",
    "    true_pos = pred_pos & lbl_ps\n",
    "    num_pred_pos = int(np.sum(pred_pos))\n",
    "    num_true_pos = int(np.sum(true_pos))\n",
    "    if num_pred_pos == 0:\n",
    "        return 1.0, 0.0\n",
    "    return float(num_true_pos) / float(num_pred_pos), float(num_true_pos) / float(num_cond_pos)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.37236172824813174, max R: 1.0, max P: 1.0\n",
      "100% recall at: 23%, threshold: 0.001983668327386114\n"
     ]
    },
    {
     "data": {
      "image/png": "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zONewMgZaCb73PXTeXwMT6qUz4QQzHHKe8xz0gLmOWkB85xIXbJR9BAAaqKXsbbBGNsJDI0PQil4PB4UFhYqHQZRRrjdbrS0tGDBggWw2WxKh0OUEcxz0gLmOWkB85xIXbLV0mOipc5U27HYMQGhUMphU4jyQigUwrVr15jnlNeY56QFzHPSAuY5kbpko+jBogURERERERERZV2mix7szEZEREREREREishk0eNLGdw3EREREREREdGYMlb0kFKy6JFFZrNZ6RCIMsZisWDBggWwWCxKh0KUMcxz0gLmOWkB85xIXbI1kCllmNFoVDoEoowxGo2YMWOG0mEQZRTznLSAeU5awDwnUhed0gFQegQCAaVDIMqYQCCAy5cvM88przHPSQuY56QFzHMidWHRI0/4fD6lQyDKGK/Xi5aWFni9XqVDIcoY5jlpAfOctIB5TqQuLHoQERERERERUV5i0YOIiIiIiIiI8hKLHkRERERERESUl1j0yBN6vV7pEIgyRq/Xo6ioiHlOeY15TlrAPCctYJ4TqQunrM0TVqtV6RCIMsZms2HFihVKh0GUUcxz0gLmOWkB85xIXdjSI09IKZUOgShjpJQIh8PMc8przHPSAuY5aQHznEhdWPTIEy6XS+kQiDLG6XRiz549cDqdSodClDHMc9IC5jlpAfOcSF1Y9CAiIiIiIiKivMSiBxERERERERHlJRY9iIiIiIiIiCgvsehBRERERERERHmJU9bmCZvNpnQIRBljt9uxYcMGGI1GpUMhyhjmOWkB85y0gHlOpC4seuQJnY6Ndih/6XQ6mM1mpcMgyijmOWkB85y0gHlOpC78ppwnvF6v0iEQZYzH48GJEyfg8XiUDoUoY5jnpAXMc9IC5jmRurDokSeCwaDSIRBlTDAYRHd3N/Oc8hrznLSAeU5awDwnUhcWPYiIiIiIiIgoL7HoQURERERERER5iUUPIiIiIiIiIspLLHrkCZPJpHQIRBljNpsxZ84cjoROeY15TlrAPCctYJ4TqQunrM0TLHpQPjOZTJg9e7bSYRBlFPOctIB5TlrAPCdSF7b0yBMcHZryGUdBJy1gnpMWMM9JC5jnROrCokee8Hq9SodAlDGc7560gHlOWsA8Jy1gnhOpC4seRERERERERJSXWPQgIiIiIiIiorzEogcRERERERER5SUWPfKETseXkvKX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\n",
      "text/plain": [
       "<Figure size 1200x740 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "ps, rs, ths = ([], [], [])\n",
    "th = np.max(pred_ps)\n",
    "while th >= 0.0:\n",
    "    p, r = pr_at_th(th)\n",
    "    if p > 0:\n",
    "        ps.append(p)\n",
    "        rs.append(r)\n",
    "    else:\n",
    "        ps.append(1.0)\n",
    "        rs.append(0.0)\n",
    "    ths.append(th)\n",
    "    th -= 0.0005\n",
    "    \n",
    "from sklearn import metrics\n",
    "\n",
    "print(f'AUC: {metrics.auc(rs, ps)}, max R: {max(rs)}, max P: {max(ps)}')\n",
    "    \n",
    "i = len(rs) - 1\n",
    "while rs[i] == 1.0:\n",
    "    i -= 1\n",
    "i += 1\n",
    "print(f'100% recall at: {int(ps[i] * 100)}%, threshold: {ths[i]}')\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(6, 3.7), dpi=200)\n",
    "\n",
    "ax.spines['top'].set_color('#808080')\n",
    "ax.spines['right'].set_color('#808080')\n",
    "ax.spines['left'].set_color('#808080')\n",
    "ax.spines['bottom'].set_color('#808080')\n",
    "ax.tick_params(direction='in', color='#808080')\n",
    "\n",
    "plt.grid(color='#c0c0c0', linestyle='--', linewidth=0.5)\n",
    "\n",
    "plt.ylabel('Precision', fontweight='bold')\n",
    "plt.xlabel('Recall', fontweight='bold')\n",
    "\n",
    "plt.xlim((0.0, 1.0))\n",
    "plt.ylim((0.0, 1.0))\n",
    "\n",
    "_ = plt.plot(rs, ps)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
